package com.media.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.support.TransactionTemplate;

/**
 * 事务管理配置
 */
@Configuration
public class TransactionConfiguration {

    @Bean(name = "myTransactionTemplate")
    public TransactionTemplate transactionTemplate(PlatformTransactionManager platformTransactionManager) {
        TransactionTemplate transactionTemplate = new TransactionTemplate(platformTransactionManager);
        // 设置事务传播级别为 REQUIRED：如果当前存在事务，则加入该事务；如果当前不存在事务，则创建一个新的事务。（默认行为）
        transactionTemplate.setPropagationBehavior(TransactionTemplate.PROPAGATION_REQUIRED);
        // 设置事务隔离级别为 使用底层数据库的默认隔离级别
        transactionTemplate.setIsolationLevel(TransactionTemplate.ISOLATION_DEFAULT);
        // 设置事务超时时间， -1 表示永不超时。
        transactionTemplate.setTimeout(TransactionTemplate.TIMEOUT_DEFAULT);
        // 设置事务只读为false，表示可以进行读写操作
        transactionTemplate.setReadOnly(false);
        return transactionTemplate;
    }
}
